//
// Matte.hpp for  in ~/Dropbox/Projets/raytracer-2016/Includes/Materials/
//
// Made by Jonathan
// Login   <ledey_l@epitech.net>
//
// Started on  Wed Sep 25 23:49:08 2013 Jonathan
// Last update Thu Sep 26 00:36:58 2013 Jonathan
//

#ifndef				MATTE_HPP_
# define			MATTE_HPP_

# include			"Materials/Material.hpp"
# include			"BRDFs/Lambertian.hpp"

namespace			Materials
{
  class				Matte : public Material
  {
  private:
    BRDFs::Lambertian		*mAmbientBRDF;
    BRDFs::Lambertian		*mDiffuseBRDF;

  protected:

  public:
    Matte(void);
    Matte(Matte const &rOther);
    Matte			&operator=(Matte const &rOther);
    ~Matte(void);

    virtual Matte		*Clone(void) const;
    void			SetKa(long double rKa);
    void			SetKd(long double rKd);
    void			SetCd(Maths::Color const &rColor);
    void			SetCd(long double rR, long double rG, long double rB);
    void			SetCd(long double rColor);
    virtual Maths::Color	Shade(Maths::ShadeRec const &rShadeRec);
  };
};

#endif				/* MATTE_HPP_ */
